ZIC(8) | Linux System Administration | ZIC(8) |
名前¶
zic - タイムゾーンコンパイラ
書式¶
zic [ -v ] [ -d directory ] [ -l localtime ] [ -p posixrules ] [ -L leapsecondfilename ] [ -s ] [ -y command ] [ filename ... ]
説明¶
zic はコマンドラインで指定されたファイル (複数指定可) からテキストを読み、 時刻変換情報ファイルを生成する。ファイル名も読み込みテキストで指定しておく。 filename が - の場合は、標準入力から読み込む。
以下のオプションを指定できる:
- -d directory
- 時刻変換情報ファイルを生成するディレクトリを、標準のディレクトリ (以下を参照) ではなく指定したディレクトリにする。
- -l timezone
- 指定したタイムゾーンをローカルタイムに用いる。
zic
は入力に以下の書式のリンク行が含まれているかのように振る舞う。
Link timezone localtime
- -p timezone
- POSIX
形式のタイムゾーン環境変数を扱うとき、
指定したタイムゾーンのルールを用いる。
zic
は入力に以下の書式のリンク行が含まれているかのように振る舞う。
Link timezone posixrules
- -L leapsecondfilename
- 閏秒情報を与えられた名前のファイルから読み込む。 このオプションが指定されなかった場合には、 出力ファイルには閏秒の情報は含まれない。
- -v
- データファイルに現れる年が time(2) で表記できる範囲を越えている場合に文句を言う。
- -s
- 出力ファイルに格納される時刻の値を、 signed で評価しても unsigned で 評価しても同じ値になるような範囲に制限する。 このオプションを使うと SVVS 互換なファイルを生成することができる。
- -y command
- 年の型のチェック (以下参照) に yearistype ではなく指定した command を用いる。
入力行はフィールドからなる。 フィールド間は、連続した任意の個数の空白文字によって区切られる。 行頭・行末の空白文字は無視される。 クォートされていないシャープ文字 (#) が入力行に現れた場合は、 そこから行末まではコメントとして扱われる。 空白文字やシャープ文字をダブルクォート (") で囲めば、 フィールドの一部として用いることができる。 (コメント除去処理を行った後のものを含めて) 空行は無視される。 空行以外の行は、 3 種類あるタイプの行のいずれかであるとみなされる。 3 つのタイプとは、ルール行 (rule line)、ゾーン行 (zone line)、 リンク行 (link line) である。
ルール行の書式は以下のようなものである。
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S 例: Rule US 1967 1973 - Apr lastSun 2:00 1:00 Dルール行を構成するフィールドは以下の通り:
- NAME
- このルールが所属するルールセットの名前を与える (任意)。
- FROM
- このルールが適用される最初の年を与える。 任意の整数を年として与えることができる。グレゴリオ暦が仮定される。 minimum (あるいはその短縮) は整数表記できる最小の年を意味する。 maximum (あるいはその短縮) は整数表記できる最大の年を意味する。 ルールでは時刻値 (time value) では表記できない時刻も記述できる。 表記できない時刻は無視される。つまりルールは 異なった時刻値の型を持つホスト間でポータブルである。
- TO
- このルールが適用される最後の年を与える。 minimum と maximum (上述) に加え、 only (またはその短縮) を用いることができ、この場合は FROM フィールドに指定した値と同じ値が用いられる。
- TYPE
- ルールの適用される年のタイプを与える。
TYPE が -
であれば、このルールは
FROM から TO
に挟まれた
(両端含む)
全ての年に適用される。
TYPE
がそれ以外の場合には、
zic
は以下のコマンドを実行して年のタイプをチェックする。
yearistype year type
返り値が 0 の場合は、その年は与えられたタイプに含まれ、 返り値が 1 の場合は含まれないことになる。 - IN
- ルールが効力を持つ月の名前を指定する。 月名は短縮できる。
- ON
- ルールが効力を持つ日の名前を指定する。
以下のような書式を認識する:
5 その月の第 5 日 lastSun その月の最後の日曜日 lastMon その月の最後の月曜日 Sun>=8 第 8 日以降の最初の日曜日 Sun<=25 第 25 日以前の最後の日曜日
曜日の名前は短縮できる。全部綴っても良い。 ON フィールドの内部にはスペースを入れてはいけないことに注意。
- AT
- ルールが効力を持つ一日のうちの時刻を与える。
以下のような書式を認識する:
2 時間での表記 2:00 時間と分での表記 15:00 24 時間形式の時間 (正午以降) 1:28:14 時間・分・秒での表記 - 0 と同じ
ここで 0 時はその日のはじまりであり、 24 時はその日の終わりである。 これらの書式のあとには、以下の文字のいずれかを指定することができる。 w 与えられた時刻がローカルな "壁時計 (wall clock)" 時刻である; s 与えられた時刻がローカルな "標準 (standard)" 時刻である; u (または g または z) 与えられた時刻が標準時 (universal time) である。 これらの表意文字がいずれも指定されなかった場合は、 壁時計時刻が仮定される。
- SAVE
- ルールが効力を持っているとき、ローカルな標準時刻に追加すべき 時間の量を与える。このフィールドの書式は AT フィールドのものと同じである (ただしもちろん w と s の後置文字は用いられない)。
- LETTER/S
- このルールが効力を持っている場合に用いられるタイムゾーン短縮型の "可変部 (variable part)" を与える (例えば "EST" や "EDT" における "S" や "D" など)。 このフィールドが - であった場合には、 可変部は存在しない。
ゾーン行の書式は以下のようなものである。
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] 例: Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00ゾーン行を構成するフィールドは以下の通り:
- NAME
- タイムゾーンの名前。この名前がこのゾーンの時刻変換情報ファイルを 生成するときに用いられる。
- GMTOFF
- このゾーンの標準時刻を得るために、 UTC に加える時間。 このフィールドの書式は、ルール行の AT および SAVE フィールドのものと同じである。時間を UTC から引く必要がある場合は マイナス記号を前置する。
- RULES/SAVE
- タイムゾーンに適用されるルールの名前か、あるいは ローカル標準時刻に加えるべき時間の量を指定する。 このフィールドが - ならば、常に標準時刻がこのゾーンに対して用いられる。
- FORMAT
- このタイムゾーンに対するタイムゾーン短縮名の書式。 2 文字の文字列 %s を用いて、どこが "可変部" になるかを指定できる。あるいはスラッシュ文字 (/) を用いて 標準の短縮名とサマータイム短縮名を区切ることができる。
- UNTIL
- UTC に対するオフセットか、その場所におけるルールが変更される時刻。 年・月・日・時刻で指定する。 これが指定された場合には、タイムゾーンの情報は与えられている UTC オフセットから生成され、ルールは指定時刻になると変更される。 月・日・時刻は、ルールの IN, ON, AT カラムと同じ書式で指定する。 この後に続くカラムは省略できる。 省略されたカラムに対しては、 可能性のあるもののうち最も早い値がデフォルトで用いられる。
- この行には必ず "継続"(continuation) 行が続く。 継続行はゾーン行と同じ書式を持つが、 "Zone" と名前は省略される。なぜなら継続行は直前の行の UNTIL フィールドで指定された時刻以降の情報を与えるものだからである。 継続行にもゾーン行と同じように UNTIL フィールドを指定することができ、この場合はその次の行が さらなる継続行になることとなる。
リンク行の書式は以下のようなものである。
Link LINK-FROM LINK-TO 例: Link Europe/Istanbul Asia/Istanbul
LINK-FROM フィールドはゾーン行の NAME フィールドが記述される。 LINK-TO フィールドはそのゾーンの別名である。
ファイル中で閏秒を記述する行は以下のような書式を持つ。
Leap YEAR MONTH DAY HH:MM:SS CORR R/S 例: Leap 1974 Dec 31 23:59:60 + SYEAR, MONTH, DAY, HH:MM:SS は閏秒の生じた瞬間を示す。 CORR フィールドには、秒が挿入された場合 "+" を、秒がスキップされた場合 "-" を指定する。 R/S フィールドには、他のフィールドが記述している閏秒の時刻が UTC ならば "Stationary" (あるいはその短縮形) を、ローカルな壁時計時刻なら "Rolling" (あるいはその短縮形) を指定する。
ファイル¶
/usr/local/etc/zoneinfo 生成されたファイル用の標準ディレクトリ
注意¶
二つ以上のローカルタイムを持っている地域では、 ローカルな標準時を 最も早い方の時刻変換ルールの AT フィールドに用いる必要があるだろう。さもないと コンパイルされたファイルに記録された最も早い変換時刻が 正しいことが保証されない。
関連項目¶
2007-05-18 |